home *** CD-ROM | disk | FTP | other *** search
- ;; tai-sonla.mim -- Tai Viet input method with Phonetic sequence
- ;; Copyright (C) 2007
- ;; Thua Thien Hue Center of Information Technology (HueCIT, Vietnam)
- ;; Copyright (C) 2007
- ;; National Institute of Advanced Industrial Science and Technology (AIST)
- ;; Registration Number H15PRO112
-
- ;; This file is part of the m17n contrib; a sub-part of the m17n
- ;; library.
-
- ;; The m17n library is free software; you can redistribute it and/or
- ;; modify it under the terms of the GNU Lesser General Public License
- ;; as published by the Free Software Foundation; either version 2.1 of
- ;; the License, or (at your option) any later version.
-
- ;; The m17n library is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ;; Lesser General Public License for more details.
-
- ;; You should have received a copy of the GNU Lesser General Public
- ;; License along with the m17n library; if not, write to the Free
- ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- ;; Boston, MA 02110-1301, USA.
-
- (input-method tai sonla-kbd)
-
- (title "Ω½₧")
-
- (description (_"Tai Viet input method using the phonetic key sequence with the Tai Son La keyboard layout.
- The phonetic key sequence means that you type a syllable in this order:
- C W? V v? F? T?
- where
- C is an initial consonant,
- W is a label for labializing C ('ꪫ'),
- V is a vowel (V1:prefix, V2:combining, or V3:postfix),
- v is the second vowel of a digraph vowel
- (in the case that V is 'ꪹ' and v is 'ꪸ', 'ꪷ', or 'ꪱ'),
- F is a final consonant,
- T is a tonemark (spacing or combining).
-
- You can type special symbols by these keys:
- '$' -> 'Ω½¢'
- '#' -> 'Ω½£'
- '%' -> 'Ω½¥'
- '!' -> 'Ω½₧'
- '@' -> '꫟'
- "))
-
- (macro
- (adjust-tone
- (set TT @-1)
- (delete @-)
- (cond ((| (= T ?ꫀ) (= T ?ꫂ)) (delete @-) (move @>))
- ((> T 0) (move M) (delete @+) (move @>)))
- (set T TT)
- (cond ((| (= T ?ꫀ) (= T ?ꫂ)) (insert T))
- ((> T 0) (move M) (insert T) (move @>)))))
-
- (map
- (consonant
- ("k" "ꪀ")
- ("K" "ꪁ")
- ("x" "ꪂ")
- ("X" "ꪃ")
- ("q" "ꪄ")
- ("Q" "ꪅ")
- ("|" "ꪆ")
- ("\"" "ꪇ")
- ("g" "ꪈ")
- ("G" "ꪉ")
- ("c" "ꪊ")
- ("C" "ꪋ")
- ("." "ꪌ")
- (">" "ꪍ")
- ("s" "ꪎ")
- ("S" "ꪏ")
- ("z" "ꪐ")
- ("Z" "ꪑ")
- ("d" "ꪒ")
- ("D" "Ω¬ô")
- ("t" "Ω¬ö")
- ("T" "Ω¬ò")
- ("w" "Ω¬û")
- ("W" "Ω¬ù")
- ("n" "Ω¬ÿ")
- ("N" "Ω¬Ö")
- ("b" "ꪚ")
- ("B" "ꪛ")
- ("p" "ꪜ")
- ("P" "ꪝ")
- ("/" "ꪞ")
- ("?" "ꪟ")
- ("f" "ꪠ")
- ("F" "ꪡ")
- ("m" "Ω¬ó")
- ("M" "Ω¬ú")
- ("j" "ꪤ")
- ("J" "ꪥ")
- ("r" "ꪦ")
- ("R" "ꪧ")
- ("l" "ꪨ")
- ("L" "ꪩ")
- ("v" "ꪪ")
- ("V" "ꪫ")
- ("h" "ꪬ")
- ("H" "ꪭ")
- ("o" "ꪮ")
- ("O" "ꪯ"))
-
- (final-c
- ("b" "ꪚ")
- ("d" "ꪒ")
- ("k" "ꪀ")
- ("J" "ꪥ")
- ("M" "Ω¬ú")
- ("N" "Ω¬Ö")
- ("G" "ꪉ")
- ("V" "ꪫ"))
-
- (high-v
- ("V" "ꪫ"))
-
- (special
- ("$" "Ω½¢")
- ("#" "Ω½£")
- ("%" "Ω½¥")
- ("!" "Ω½₧")
- ("@" "꫟"))
-
- (vowel-pre
- ("e" "ꪵ")
- ("," "ꪶ")
- ("E" "ꪹ")
- ("Y" "ꪻ")
- ("y" "ꪼ")
- ("o^" "ꪶ"))
-
- (vowel-combining
- ("}" "ꪰ")
- ("i" "ꪲ")
- ("U" "ꪳ")
- ("u" "ꪴ")
- ("[" "ꪷ")
- ("I" "ꪸ")
- ("{" "ꪾ")
- ("awm" "ꪾ"))
-
- (vowel-post
- ("a" "ꪱ")
- ;; ("A" "ꪱꪲ")
- ("<" "ꪺ")
- ("]" "ꪽ")
- ;; Note: "ꪮ" and "ꪯ" can be consonant and vowel.
- ("o" "ꪮ")
- ("O" "ꪯ"))
-
- (vowel-digraph
- ("r" "ꪸ")
- ("R" "ꪷ")
- ("A" "ꪱ"))
-
- (tone
- (":" "ꫀ")
- (";" "ꫂ")
- ("\"" "꪿")
- ("'" "꫁"))
-
- (punctuation
- ("!!" "!")
- ("@@" "@")
- ("##" "#")
- ("$$" "$")
- ("%%" "%")
- (",," ",")
- (".." ".")
- (";;" ";")
- ("::" ":")
- (";;" ";")
- ("\"\"" "\"")
- ("//" "/")
- ("||" "|")
- ("''" "'")
- ("!!" "?")
- ("??" "?")
- ("[[" "[")
- ("]]" "]")
- ("{{" "{")
- ("}}" "}")
- ("<<" "<")
- (">>" ">"))
-
- (backspace
- ((BackSpace) (sub K 1) (undo K))))
-
- (state
- (init
- (t (set K 0))
- (consonant (mark M) (shift after-c))
- (special)
- (punctuation)
- (vowel-pre)
- (vowel-post)
- (vowel-combining)
- (tone))
-
- (after-c
- (t (mark M) (set V2 0) (set K @@))
- (high-v (mark M))
- (vowel-pre (set V1 @-1)
- (delete @-)
- (move @<) (insert V1) (move @>) (shift after-c-vpre))
- (vowel-combining (cond ((> V2 0) (move @-) (delete @-) (move @>))
- (1 (set K @@)))
- (set V2 @-1) (mark M))
- (vowel-post (shift after-c-v))
- (vowel-digraph (mark M) (move @<) (insert "ꪹ") (move @>)
- (shift after-c-v))
- (final-c (delete @-) (pushback 1) (shift init))
- (backspace)
- (nil (shift after-c-v)))
-
- (after-c-vpre
- (t (set K @@))
- (vowel-combining (set V2 @-1) (mark M) (shift after-c-v))
- (vowel-post (shift after-c-v))
- (backspace)
- (nil (shift after-c-v)))
-
- (after-c-v
- (t (set T 0) (set K @@))
- (tone (cond ((= T 0) (set K @@))) (adjust-tone))
- (final-c (shift after-c-v-f))
- (backspace))
-
- (after-c-v-f
- (t (set K @@))
- (tone (adjust-tone))
- (backspace)))
-